package cn.xopencode.recordservice.convert.robotroom;

import cn.xopencode.common.framework.vo.PageResult;
import cn.xopencode.recordservice.dal.mysql.dataobject.robotroom.RobotRoomRecordDO;
import cn.xopencode.recordservice.dal.mysql.dataobject.robotroom.RobotRoomRecordEmpRelDO;
import cn.xopencode.recordservice.rpc.robotroom.dto.AdminRecordPageDTO;
import cn.xopencode.recordservice.rpc.robotroom.dto.RobotRoomRecordCreateDTO;
import cn.xopencode.recordservice.rpc.robotroom.dto.RobotRoomRecordPageDTO;
import cn.xopencode.recordservice.rpc.robotroom.dto.RobotRoomRecordUpdateDTO;
import cn.xopencode.recordservice.rpc.robotroom.vo.RobotRoomRecordEmpRelVO;
import cn.xopencode.recordservice.rpc.robotroom.vo.RobotRoomRecordPageVO;
import cn.xopencode.recordservice.rpc.robotroom.vo.RobotRoomRecordUpdateVO;
import cn.xopencode.recordservice.service.robotroom.bo.AdminRecordPageBO;
import cn.xopencode.recordservice.service.robotroom.bo.RobotRoomRecordCreateBO;
import cn.xopencode.recordservice.service.robotroom.bo.RobotRoomRecordPageBO;
import cn.xopencode.recordservice.service.robotroom.bo.RobotRoomRecordUpdateBO;
import com.baomidou.mybatisplus.core.metadata.IPage;
import org.mapstruct.Mapper;
import org.mapstruct.Mapping;
import org.mapstruct.factory.Mappers;

import java.util.List;

@Mapper
public interface RobotRoomRecordConvert {

    RobotRoomRecordConvert INSTANCE = Mappers.getMapper(RobotRoomRecordConvert.class);

    @Mapping(source = "records", target = "list")
    PageResult<RobotRoomRecordPageVO> convert(IPage<RobotRoomRecordDO> recordDOIPage);

    List<RobotRoomRecordEmpRelVO> convert(List<RobotRoomRecordEmpRelDO> doList);

    RobotRoomRecordPageBO convert(RobotRoomRecordPageDTO pageDTO);

    RobotRoomRecordUpdateVO convert(RobotRoomRecordDO recordDO);

    RobotRoomRecordCreateBO convert(RobotRoomRecordCreateDTO createDTO);

    RobotRoomRecordDO convert(RobotRoomRecordCreateBO createBO);

    RobotRoomRecordUpdateBO convert(RobotRoomRecordUpdateDTO createBO);

    RobotRoomRecordDO convert(RobotRoomRecordUpdateBO createBO);

}
